#include "login.h"
#include "ui_login.h"
#include "main_page.h"
#include "enroll.h"
#include "widget.h"

#include <QSqlQuery>
#include<QMessageBox>
#include<QDebug>
#include<QSqlError>
#include<QSqlDatabase>//管理数据库的连接和数据库驱动的类
#include<QKeyEvent>//键盘输入事件
#include<QFile>
#include<QTextStream>
#include<QDebug>
#include <QTextEdit>

login::login(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::login)
{
    ui->setupUi(this);


    this->setWindowTitle("工业生产检测系统");

//    QPixmap pixmap;
    ui->userna_edit->setPlaceholderText("请输入账户");
    ui->passw_edit->setPlaceholderText("请输入密码");
    ui->passw_edit->setEchoMode(QLineEdit::Password);
    ui->passw_edit->setMaxLength(15);


    // 登录按钮
    connect(ui->login_btn, &QPushButton::clicked, this, &login::handleLogin);

    // 注册按钮
        connect(ui->regist_btn, &QPushButton::clicked, this, [=]() {
        enroll* to_enroll = new enroll;
        to_enroll ->show();
        this->hide();

    });

    //链接到弹出隐私保护协议的槽函数

    connect(ui->agreetm_checkbox, &QCheckBox::stateChanged, this, &login::showPrivacyPolicy);

}

login::~login()
{
    delete ui;
}


void login::on_exit_btn_clicked()
{
    this->close();
}

void login::on_conceal_checkBox_clicked(bool checked)
{   //enum EchoMode { Normal, NoEcho, Password, PasswordEchoOnEdit };
    if(checked){
        ui->passw_edit->setEchoMode(QLineEdit::Normal);
    }else{
        ui->passw_edit->setEchoMode(QLineEdit::Password);
    }
}

void login::handleLogin(){

    if (ui->agreetm_checkbox->isChecked()) {
    QString account = ui->userna_edit->text();
    QString password = ui->passw_edit->text();


    QSqlQuery checkquery;
    checkquery.prepare("SELECT * FROM user WHERE account = ? ");
    checkquery.addBindValue(account);
    if (!checkquery.exec()) {
        qDebug() <<checkquery.lastError().text();
        return;
    }
    if (!checkquery.next()) {
       QMessageBox::information(this, "登录", "用户填写错误或者未注册");
       return;
    }



    QSqlQuery query;
    query.prepare("SELECT * FROM user WHERE account = ? AND password = ?");
    query.addBindValue(account);
    query.addBindValue(password);

    if (!query.exec()) {
        qDebug() << query.lastError().text();
        return;
    }

    if (!query.next()) {
       QMessageBox::information(this, "登录", "登录失败：用户名或密码不正确");
    } else {
//        main_page* to_main_page = new main_page;
//        to_main_page->show();
        Widget* to_widget = new Widget;
        to_widget->show();
        this->hide();
        QMessageBox::information(this, "登录", "登录成功");
    }

    }else{
         QMessageBox::warning(this, "警告", "请先同意用户隐私保护协议");
    }
}

void login::keyReleaseEvent(QKeyEvent *event){
    switch (event->key()) {
    case Qt::Key_Return:
        handleLogin();
        break;
    case Qt::Key_Enter:
        handleLogin();
        break;
    default:
        break;
    }
}

void login::showPrivacyPolicy(int state){
    if(state == Qt::Checked){
        textEdit.setPlainText("本文档对使用本服务的用户合用，包括对隐私保护的规定。请\
                              您在使用本服务前务必子细阅读本文档的所有内容。如果您不\
                              允许本文档任意部份的内容，则您将无法使用本服务。通过使\
                              用本服务，您即表示您允许本文档的所有内容。\
                                    \
                              第一条服务内容                                            \
                              1.1.本服务指由本公司提供的包括但不限于网站、APP、软件等产品及服务。\
                              ");
        textEdit.setReadOnly(true);

        QMessageBox::information(this, "用户隐私保护协议",textEdit.toPlainText(), QMessageBox::Ok);
    }
}
//        QMessageBox::information(this,"用户服务协议及隐私保护政策","本文档对使用本服务的用户合用，包括对隐私保护的规定。请您在使用本服务前务必子细阅读本文档的所有内容。如果您不允许\
//本文档任意部份的内容，则您将无法使用本服务。通过使用本服务，您即表示您允许本文档的所有内容。\
//              第一条服务内容\
//       1.1.本服务指由本公司提供的包括但不限于网站、APP、软件等产品及服务。");

